package com.personal.service;

import com.personal.dto.ImageHolder;
import com.personal.dto.ProductExecution;
import com.personal.entity.Product;
import com.personal.exception.ProductCategoryOperationException;
import com.personal.exception.ProductOperationException;

import java.util.List;

/**
 * @author 萌新
 * @version 1.0
 * @date 2021/4/22 16:58
 */

public interface ProductService {

    /**
     * 添加商品信息以及图片处理
     * @param product
     * @param thumbnail
     * @param thumbnail
     * @param productImgList
     * @return
     * @throws ProductCategoryOperationException
     */
    ProductExecution addProduct(Product product, ImageHolder thumbnail, List<ImageHolder> productImgList) throws ProductCategoryOperationException;

    /**
     * 根据productId查询product
     * @param productId
     * @return
     */
    Product queryProductById(long productId);

    /**
     *
     * @param product 商品信息
     * @param imageHolder 商品缩略图的封装信息
     * @param prodImgDetailList 商品详情图片的封装信息
     * @return
     * @throws ProductOperationException
     */
    ProductExecution modifyProduct(Product product, ImageHolder imageHolder,List<ImageHolder> prodImgDetailList) throws ProductOperationException;

    /**
     * 查询  Service接口层只需要提供一个方法即可，内部调用Dao层的两个方法，将返回结果封装到DTO中
     * @param productCondition
     * @param pageIndex 前端页面   只有几页 第几页
     * @param pageSize  一页中显示的行数
     * @return
     * @throws ProductOperationException
     */
    ProductExecution queryProductionList(Product productCondition,int pageIndex,int pageSize) throws ProductOperationException;

}
